// 加载 jarFile 一般使用maven加载.
function importJar(file) {
    return scriptResourceLoader.importJar(file);
}

// 加载 class 类.
function importClass(className) {
    return scriptResourceLoader.importClass(className);
}

// 加载单个脚本.
function importScript(scriptName) {
    return importScripts(scriptName)[0];
}

//加载多个脚本.
function importScripts() {
    return scriptResourceLoader.importScripts(arguments);
}

// 加载配置信息.
function importProperties(resourceName) {
    return scriptResourceLoader.importProperties(resourceName);
}

// 加载文件内容.
function getResourceContent(resourceName) {
    return scriptResourceLoader.getResourceContent(resourceName);
}

// 加载文件内容流.这里会先一步加载到内存中，返回ByteArrayInputStream, 请注意.
function getResourceAsStream(resourceName) {
    return scriptResourceLoader.getResourceAsStream(resourceName);
}

// 初始化json工具.
importJar("com.google.code.gson:gson:jar:2.8.2");

importClass("java.util.Date");
importClass("java.util.HashMap");
importClass("java.lang.String");
importClass("java.util.UUID");
// 初始化system工具类.
importClass("java.lang.System");

// 使用gson代理json.
importClass("com.google.gson.GsonBuilder");
importClass("com.google.gson.LongSerializationPolicy");
var gson = new GsonBuilder()
.setLongSerializationPolicy(LongSerializationPolicy.STRING)
.setDateFormat("yyyy-MM-dd HH:mm:ss").create();

/**
 * 系统中使用json 工具，转换json 与 反转json.
 * @type {{toJson: json.toJson, fromJson: json.fromJson}}
 */
// 支持转json.
JSON.toJson = function (object) {
    return gson.toJson(object);
};
// 支持反转json.
JSON.fromJson = function (jsonString, clazz) {
    return gson.fromJson(jsonString, clazz);
};

// date 格式化方法.
Date.prototype.format = function (fmt) {
    var o = {
        "M+": this.getMonth() + 1,               //月份
        "d+": this.getDate(),                    //日
        "H+": this.getHours(),                   //小时
        "m+": this.getMinutes(),                 //分
        "s+": this.getSeconds(),                 //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds()             //毫秒
    };
    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1,
                (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(fmt)) {
            fmt = fmt.replace(RegExp.$1,
                    (RegExp.$1.length === 1) ? (o[k]) : (("00" + o[k]).substr(
                            ("" + o[k]).length)));
        }
    }
    return fmt;
};

/*
 * 重写时间的toJSON方法，因为在调用JSON.stringify的时候，时间转换就调用的toJSON，
 * 这样会导致少8个小时，所以重写它的toJSON方法
 */
Date.prototype.toJSON = function () {
    // util.formatDate是自定义的个时间格式化函数
    return this.format("yyyy-MM-dd HH:mm:ss");
};